package io;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * 对象流
 * 对象流是一对高级流，作用是方便读写任何java对象
 * java.io.ObjectInputStream和ObjectOutputStream
 * @author Xiloer
 *
 */
public class OOSDemo {
	public static void main(String[] args) throws IOException {
		/*
		 * 将一个Person实例写入文件person.obj
		 */
		String name = "苍老师";
		int age = 18;
		String gender = "女";
		String[] otherInfo = {"是个演员","来自日本","爱好是写毛笔字","促进中日文化交流","广大男性同胞的启蒙老师"};
		Person p = new Person(name, age, gender, otherInfo);		
		System.out.println(p);
		
		FileOutputStream fos = new FileOutputStream("person.obj");
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		/*
		 * writeObject方法要求写出的对象所属的类必须实现接口:Serializable
		 * 否则会抛出异常
		 * 
		 * 在流连接中，对象流的工作是:对象序列化，就是将给定的对象按照其结构
		 * 转换为一组字节的过程。
		 * 
		 * 然后这组字节再经过文件流写入了文件，这个过程称为数据持久化。因为写入
		 * 文件就是写入了磁盘，断电也可以保存。
		 * 
		 */
		oos.writeObject(p);
		System.out.println("写出完毕!");
		
		oos.close();
	}
}









